package com.glebusheg.data 
{
	import com.glebusheg.text.StringManager;
	/**
	 * ...
	 * @author Gleb Volkov
	 */
	public class ItemInfo 
	{
		private static const NO_TITLE:String = "";
		private static const NO_DESCRIPTION:String = "";
		private static const NO_ICON:String = "mc_item_no_icon";
		
		private var _title:String = NO_TITLE;
		private var _description:String = NO_DESCRIPTION;
		private var _iconResource:String = NO_ICON;
		
		public function ItemInfo() 
		{
		}

		public function parse(xml:XML):void 
		{
			if(xml)
			{	
				if(xml.hasOwnProperty("@title"))
					_title = StringManager.localize(xml.@title);
				
				if(xml.hasOwnProperty("@desc"))
					_description = StringManager.localize(xml.@desc);
				
				if(xml.hasOwnProperty("@icon"))
					_iconResource = xml.@icon;
			}
		}
		
		/**
		 * Дружелюбное (user-friendly) название.
		 * 
		 * @default ItemInfo.NO_TITLE
		 */
		public function get title():String
		{
			return _title;
		}
		
		/**
		 * Текстовое описание.
		 * Если не задано в XML, то ставится "Нет описания"
		 * Если описание не требуется, то укажите <code><info desc="" ...</code> 
		 * 
		 * @default ItemInfo.NO_DESCRIPTION
		 */
		public function get description():String
		{
			return _description;
		}
		
		/**
		 * Иконка для отображения в интерфейсах игры.
		 * Строковый идентификатор Ресурса в <code>AssetManager</code> 
		 * По-умолчанию ставится заглушка с плохим артом (чтобы не забыли прописать) 
		 * 
		 * @default ItemInfo.NO_ICON
		 * @see mf.ui.IconControl
		 * @see ek.asset.AssetManager
		 */
		public function get iconResource():String
		{
			return _iconResource;
		}
		
		/**
		 * Сгенерировать текст тултипа.
		 * На данный момент формат текста для тултипа:
		 * С описанием - <code>"{title}: {description}"</code>
		 * Без описания - <code>"{title}"</code>
		 */
		public function get tooltip():String
		{
			if(_title.length > 0)
			{
				if(_description.length > 0)
					return _title + ": " + _description;
				
				return _title;
			}
			
			return "";
		}
		
		public function get hasCustomIcon():Boolean
		{
			return _iconResource && _iconResource != NO_ICON;
		}
	}
}